package com.ruyuan.seckilling.activity.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruyuan.seckilling.activity.entity.Activity;
import com.ruyuan.seckilling.activity.request.ActivityModifyRequest;
import com.ruyuan.seckilling.activity.request.ActivityQueryPageRequest;

import java.util.List;

/**
 * @author zhonghuashishan
 */
public interface ActivityService {

    /**
     * 根据秒杀活动id查询秒杀活动
     */
    Activity queryById(Long id);

    /**
     * 查询用户可以看到的秒杀活动
     */
    List<Activity> queryShowableList();

    /**
     * 根据查询条件分页查询秒杀活动列表
     */
    IPage<Activity> queryPage(ActivityQueryPageRequest request);

    /**
     * 查询当前需要渲染页面的活动列表
     */
    List<Activity> queryListForTriggerPageTask();

    /**
     * 查询当前渲染页面的出现问题的活动列表
     */
    List<Activity> queryListForPageFailedCompensationTask();

    /**
     * 查询当前需要同步库存的活动列表
     */
    List<Activity> queryListForTriggerStockTask();

    /**
     * 查询当前需要清理数据的活动列表
     */
    List<Activity> queryListForCleanDataTask();

    /**
     * 保存秒杀活动
     */
    void save(Activity activity);

    void modify(ActivityModifyRequest request);

    /**
     * 修改秒杀活动的状态
     * @param activityId 秒杀活动id
     * @param oldStatus 原来的状态
     * @param newStatus 新的状态
     */
    boolean updataStatus(Long activityId, Integer oldStatus, Integer newStatus);

    /**
     * 标记是否已经渲染好静态页面
     */
    boolean updataPageReady(Long activityId, boolean pageReady);

    /**
     * 删除秒杀活动
     */
    void remove(Long id);

}
